﻿using System;
using System.Linq;
using System.Web.Mvc;
using Unijovem.Domain;
using Unijovem.UI.Models;
using System.Collections.Generic;

namespace Unijovem.UI.Controllers
{
    public class MusicaController : ControllerBase<MusicaModel, Musica>
    {
        [ValidateInput(false)]
        public override ActionResult Manter(MusicaModel model)
        {
            return base.Manter(model);
        }

        public ActionResult VideoRandomico()
        {
            var dominios = (from musica in Context.Instance.Musicas
                            where musica.UrlMp3 != null
                            select musica).ToList();

            int count = dominios.Count();
            int index = new Random().Next(count);

            var dominio = dominios[index];
            var model = new MusicaModel().CriarViewModel(dominio);
            return PartialView(model);
        }

        public ActionResult Visualizar()
        {
            Index();
            return View(Models.OrderBy(m => m.Autor.Nome));
        }

        public override ActionResult Detalhes(int id)
        {
            base.Detalhes(id);

            Model.Comentarios = Model.MusicaComentarios.OrderByDescending(d => d.Comentario.Data).Select(d =>
                    new ComentarioModel
                    {
                        Data = d.Comentario.Data,
                        Descricao = d.Comentario.Descricao,
                        Id = d.Comentario.Id,
                        IdExterno = d.IdMusica,
                        IdPessoa = d.Comentario.IdPessoa,
                        Pessoa = d.Comentario.Pessoa,
                        Tipo = d.Comentario.Tipo
                    }).ToList();

            WebSession(string.Concat(SessionName.Comentarios, Model.Id), Model.Comentarios);

            return View(Model);
        }

        public void PreencherViewBags(int? idAutor = null)
        {
            ViewBag.Autores = new Autor().SelecionarPorTipo((int)AutorModel.TipoAutor.Banda).
                ToSelectList(g => g.Nome, g => g.Id.ToString(), "Banda", idAutor.ToString());
        }
    }
}
